TerraformでAmazon WorkSpacesを立ち上げてみた。
どうも。コンサルティング部の後藤です。
結構前になりますが、今年の5月15日のTerraformのAWS ProviderアップデートによりTerraformでAmazon WorkSpaces(以下WorkSpaces)が立ち上げられるようなりましたので、そちらを試してみました。
(ずっと試そうと思っていたのですが、WorkSpacesは月初に立ち上げると高いので月末にやろう!と思っていたのに月日は流れて今日まで来てしまいました…。
Terraformバージョン
WorkSpacesが対応したのは v2.62.0 からになります。今となっては結構前のバージョンとなりますので、今から試す方はTerraform initで最新のバージョンを取得頂ければ試せるかと思います。
また、今回検証で使用したバージョンは以下の通りです。
$ terraform --version
Terraform v0.12.29
+ provider.aws v3.8.0
TerraformでWorkSpacesを立ち上げる
今回、TerraformでWorkSpacesを立ち上げるにあたって以下のコードを使用しています。
resource "aws_vpc" "vpc" { cidr_block ="10.1.0.0/16" tags = { Name = "workspace-test-vpc" } } resource "aws_subnet" "private_a" { vpc_id = aws_vpc.vpc.id cidr_block = "10.1.1.0/24" availability_zone = "ap-northeast-1a" tags = { Name = "workspace-test-subnet-a" } } resource "aws_subnet" "private_c" { vpc_id = aws_vpc.vpc.id cidr_block = "10.1.2.0/24" availability_zone = "ap-northeast-1c" tags = { Name = "workspace-test-subnet-c" } } resource "aws_directory_service_directory" "simple_ad" { type = "SimpleAD" size = "Small" name = "corp.example.com" password = "Perfect_password" vpc_settings { vpc_id = aws_vpc.vpc.id subnet_ids = [ aws_subnet.private_a.id, aws_subnet.private_c.id ] } tags = { Name = "workspace-test-ad" } } resource "aws_workspaces_directory" "test" { directory_id = aws_directory_service_directory.simple_ad.id } resource "aws_workspaces_workspace" "test" { directory_id = aws_workspaces_directory.test.id bundle_id = "wsb-5sbs0y26m" user_name = "n-goto" tags = { Name = "workspace-test" } }
resource "aws_directory_service_directory"
WorkSpacesで使用するディレクトリをSimpleADで作成しています。password
部分は英小文字、英大文字、数字、特殊文字の中から3つ含める必要があります。
resource "aws_workspaces_directory"
リソース情報の詳細はこちらからご確認頂けます。 今回は一先ず立ち上げということで、必須要件だけ設定しています。
・directory_id
作成したディレクトリサービスを指定して、WorkSpacesで使用出来るようにしています。
WorkSpacesのディレクトリにはユーザがWorkSpacesの設定を変更できるセルフサービス機能があります。この機能はself_service_permissions
で設定が出来るようです。こちらはオプション要件のため、今回は設定していません。
resource "aws_workspaces_workspace"
リソース情報の詳細はこちらからご確認頂けます。 こちらも今回は一先ず立ち上げということで、必須要件だけ設定しています。
・directory_id
WorkSpacesで使用するディレクトリを指定しています。
・bundle_id
WorkSpacesを立ち上げるバンドルを指定しています。バンドルのIDはコンソールからご確認頂けます。
・user_name
WorkSpacesのユーザ名を指定します。ここで指定するユーザはディレクトリに存在している必要があり、かつユーザに紐づくメールアドレスと名前が設定されている必要があります。
WorkSpacesをコンソールで作成する場合、以下でディレクトリにユーザを登録することが出来ますが、Terraformで作成する際は既に存在している必要があるようです。今回は既に作成したユーザ名を指定しています。
その他にも、WorkSpacesにはユーザがログオフした際に自動停止する機能や、その時間を設定する事が出来ます。それらはworkspace_properties
で設定することが出来るようです。こちらはオプション要件のため、今回は設定していません。
公式のリソース情報にはworkspace_properties
のデフォルト値が記載されていなかったため調べてみたところ、今回使用したバンドル(wsb-5sbs0y26m)では以下のように設定されていました。
・compute_type_name : VALUE
・root_volume_size_gib : 80
・user_volume_size_gib : 10
・running_mode : ALWAYS_ON
・running_mode_auto_stop_timeout_in_minutes : 0
上記設定でTerraformを実行したところ、WorkSpacesは約17分程で立ち上がりました。
WorkSpacesに接続してみる
接続にはAmazon WorkSpacesクライアントを使用します。
TerraformでWorkSpaces作成後、ユーザに登録したメールアドレス宛に以下のようなメールが届きます。
クライアントダウンロード用のURLをクリックすると、パスワード設定画面が表示されます。パスワード設定完了後、クライアントがダウンロードできます。 クライアントを起動し、登録コード、ユーザ名、パスワードを入力して接続をしてみたところ、
無事接続することが出来ました。
最後に
TerraformによるAmazon WorkSpaces作成でした。今後もテレワークの需要でWorkSpacesも需要があると思いますので、Terraformで管理できるようになったのはありがたいですね。ただWorkSpacesで使用するユーザは事前に作成が必要になりますので、すぐに使用したい場合はコンソールのが簡単そうですね。 この記事が何方かのお役立てば幸いです。